package com.yy.studyspringboot.concurrent;

import java.util.Map;
import java.util.concurrent.ConcurrentNavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;

public class ConcurrentSkipListMapTest {

    public static void main(String[] args) {
        ConcurrentSkipListMap<Integer, Integer> map = new ConcurrentSkipListMap<>();
        for (int i = 0; i < 30; i++) {
            map.put(i,i);
        }

        //获取 0-toKey 的数据  inclusive：表示是否包含N位置的数据
        ConcurrentNavigableMap<Integer, Integer> headMap = map.headMap(3,true);
        //获取 fromKey-toKey的数据，前开后闭
        ConcurrentNavigableMap<Integer, Integer> subMap = map.subMap(3, 4);
        //获取 fromKey-尾部 的全部数据
        ConcurrentNavigableMap<Integer, Integer> tailMap = map.tailMap(5);
        Map.Entry<Integer, Integer> ceilingEntry = map.ceilingEntry(3);
        //第一个键值（最小）
        Integer integer = map.firstKey();
        //第一个键值对（最小）
        Map.Entry<Integer, Integer> firstEntry = map.firstEntry();
        //最后一个键值（最大）
        Integer integer3 = map.lastKey();
        //最后一个键值对（最大）
        Map.Entry<Integer, Integer> lastEntry = map.lastEntry();
        // 返回严格小于给定键的最大键；若是不存在这样的键，则返回 null。
        Integer integer4 = map.lowerKey(4);
        // 返回严格小于给定键的最大键值对；若是不存在，则返回 null。
        Map.Entry<Integer, Integer> lowerEntry = map.lowerEntry(4);
        // 返回小于等于给定键的最大键；若是不存在这样的键，则返回 null。
        Integer integer1 = map.floorKey(4);
        // 返回与小于等于给定键的最大键关联的键-值映射关系；若是不存在这样的键，则返回 null。
        Map.Entry<Integer, Integer> floorEntry = map.floorEntry(4);
        // 返回严格大于给定键的最小键；若是不存在这样的键，则返回 null。
        Integer integer2 = map.higherKey(4);
        // 返回与严格大于给定键的最小键关联的键-值映射关系；若是不存在这样的键，则返回 null。
        Map.Entry<Integer, Integer> higherEntry = map.higherEntry(6);
        //清空
        map.clear();

    }
}
